ArrayBlockingQueue 源码分析
- JDK 1.5:
ArrayBlockingQueue
和LinkedBlockingQueue
- JDK 1.6 版本:增加
SynchronousQueue
,一个不存储元素的阻塞队列。 - JDK 1.7 版本:增加
TransferQueue
,一个支持更多操作的阻塞队列。 - JDK 1.8 版本:增加
DelayQueue
,一个支持延迟获取元素的阻塞队列。
阻塞队列就是典型的生产者-消费者模型,它可以做到以下几点:
- 当阻塞队列数据为空时,所有的消费者线程都会被阻塞,等待队列非空。
- 当生产者往队列里填充数据后,队列就会通知消费者队列非空,消费者此时就可以进来消费。
- 当阻塞队列因为消费者消费过慢或者生产者存放元素过快导致队列填满时无法容纳新元素时,生产者就
会被阻塞,等待队列非满时继续存放元素。 - 当消费者从队列中消费一个元素之后,队列就会通知生产者队列非满,生产者可以继续填充数据了。
即基于非空和非满两个条件实现生产者和消费者之间的交互
//TODO:时间原因,总结进入 java 并发编程
- ArrayBlockingQueue 源码分析
- PriorityQueue 源码分析
- DelayQueue 源码分析